package com.ruoyi.invoice.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 销项发票对象 sales_invoice
 * 
 * @author ruoyi
 * @date 2025-03-06
 */
public class SalesInvoice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    @TableId(type = IdType.AUTO)
    private Long salesInvoiceId;

    /** 发票种类id */
    @Excel(name = "发票种类id")
    private Long invoiceTypeId;

    /** 开票日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billingDate;

    /** 发票代码 */
    private String invoiceCode;

    /** 发票号码 */
    @Excel(name = "发票号码")
    private String invoiceNumber;

    /** 全电发票号码 */
    @Excel(name = "全电发票号码")
    private String fullElectricInvoiceNumber;

    /** 是否作废 0正常 1作废 */
    private Integer isCancelled;

    /** 客户id */
    @Excel(name = "客户id")
    private Long customerId;

    /** 车架号（税控机动车发票专属） */
    private String chassisNumber;

    /** 机器编码（税控机动车发票专属） */
    private String machineCode;

    /** 主管税务机关代码（税控机动车发票专属） */
    private String taxAuthorityCode;

    /** 认证状态 */
    @Excel(name = "认证状态")
    private Integer authenticationStatus;

    /** 认证日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "认证日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date authenticationDate;

    /** 备注 */
    private String remarks;

    /** 业务类型id */
    @Excel(name = "业务类型id")
    private Long businessTypeId;

    /** 模版id */
    private Long templateId;

    /** 录入发票明细（0是 1否） */
    private Integer isDetailEntered;

    /** 不含税金额 */
    private BigDecimal taxExcludedAmount;

    private String taxRate;

    /** 合计税额 */
    @Excel(name = "合计税额")
    private BigDecimal taxAmount;

    /** 合计价格 */
    @Excel(name = "合计价格")
    private BigDecimal totalAmount;

    /** 凭证id */
    private Long voucherId;

    public void setSalesInvoiceId(Long salesInvoiceId) 
    {
        this.salesInvoiceId = salesInvoiceId;
    }

    public Long getSalesInvoiceId() 
    {
        return salesInvoiceId;
    }
    public void setInvoiceTypeId(Long invoiceTypeId) 
    {
        this.invoiceTypeId = invoiceTypeId;
    }

    public Long getInvoiceTypeId() 
    {
        return invoiceTypeId;
    }
    public void setBillingDate(Date billingDate) 
    {
        this.billingDate = billingDate;
    }

    public Date getBillingDate() 
    {
        return billingDate;
    }
    public void setInvoiceCode(String invoiceCode) 
    {
        this.invoiceCode = invoiceCode;
    }

    public String getInvoiceCode() 
    {
        return invoiceCode;
    }
    public void setInvoiceNumber(String invoiceNumber) 
    {
        this.invoiceNumber = invoiceNumber;
    }

    public String getInvoiceNumber() 
    {
        return invoiceNumber;
    }
    public void setFullElectricInvoiceNumber(String fullElectricInvoiceNumber) 
    {
        this.fullElectricInvoiceNumber = fullElectricInvoiceNumber;
    }

    public String getFullElectricInvoiceNumber() 
    {
        return fullElectricInvoiceNumber;
    }
    public void setIsCancelled(Integer isCancelled) 
    {
        this.isCancelled = isCancelled;
    }

    public Integer getIsCancelled() 
    {
        return isCancelled;
    }
    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setChassisNumber(String chassisNumber) 
    {
        this.chassisNumber = chassisNumber;
    }

    public String getChassisNumber() 
    {
        return chassisNumber;
    }
    public void setMachineCode(String machineCode) 
    {
        this.machineCode = machineCode;
    }

    public String getMachineCode() 
    {
        return machineCode;
    }
    public void setTaxAuthorityCode(String taxAuthorityCode) 
    {
        this.taxAuthorityCode = taxAuthorityCode;
    }

    public String getTaxAuthorityCode() 
    {
        return taxAuthorityCode;
    }
    public void setAuthenticationStatus(Integer authenticationStatus) 
    {
        this.authenticationStatus = authenticationStatus;
    }

    public Integer getAuthenticationStatus() 
    {
        return authenticationStatus;
    }
    public void setAuthenticationDate(Date authenticationDate) 
    {
        this.authenticationDate = authenticationDate;
    }

    public Date getAuthenticationDate() 
    {
        return authenticationDate;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }
    public void setBusinessTypeId(Long businessTypeId) 
    {
        this.businessTypeId = businessTypeId;
    }

    public Long getBusinessTypeId() 
    {
        return businessTypeId;
    }
    public void setTemplateId(Long templateId) 
    {
        this.templateId = templateId;
    }

    public Long getTemplateId() 
    {
        return templateId;
    }
    public void setIsDetailEntered(Integer isDetailEntered) 
    {
        this.isDetailEntered = isDetailEntered;
    }

    public Integer getIsDetailEntered() 
    {
        return isDetailEntered;
    }
    public void setTaxExcludedAmount(BigDecimal taxExcludedAmount) 
    {
        this.taxExcludedAmount = taxExcludedAmount;
    }

    public BigDecimal getTaxExcludedAmount() 
    {
        return taxExcludedAmount;
    }
    public void setTaxAmount(BigDecimal taxAmount) 
    {
        this.taxAmount = taxAmount;
    }

    public BigDecimal getTaxAmount() 
    {
        return taxAmount;
    }
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public Long getVoucehrId() {
        return voucherId;
    }

    public void setVoucehrId(Long voucherId) {
        this.voucherId = voucherId;
    }

    public String getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(String taxRate) {
        this.taxRate = taxRate;
    }

    @Override
    public String toString() {
        return "SalesInvoice{" +
                "salesInvoiceId=" + salesInvoiceId +
                ", invoiceTypeId=" + invoiceTypeId +
                ", billingDate=" + billingDate +
                ", invoiceCode='" + invoiceCode + '\'' +
                ", invoiceNumber='" + invoiceNumber + '\'' +
                ", fullElectricInvoiceNumber='" + fullElectricInvoiceNumber + '\'' +
                ", isCancelled=" + isCancelled +
                ", customerId=" + customerId +
                ", chassisNumber='" + chassisNumber + '\'' +
                ", machineCode='" + machineCode + '\'' +
                ", taxAuthorityCode='" + taxAuthorityCode + '\'' +
                ", authenticationStatus=" + authenticationStatus +
                ", authenticationDate=" + authenticationDate +
                ", remarks='" + remarks + '\'' +
                ", businessTypeId=" + businessTypeId +
                ", templateId=" + templateId +
                ", isDetailEntered=" + isDetailEntered +
                ", taxExcludedAmount=" + taxExcludedAmount +
                ", taxRate='" + taxRate + '\'' +
                ", taxAmount=" + taxAmount +
                ", totalAmount=" + totalAmount +
                ", voucehrId=" + voucherId +
                '}';
    }
}
